/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mathma.core.value;

import mathma.core.expr.Expression;
import mathma.core.expr.ExpressionType;
import mathma.core.expr.VariableMapping;

import java.util.List;
import java.util.ArrayList;

/**
 * @since 0.2.0
 * @author Ethan Levine
 */
public abstract class Value<E extends Value> extends Expression<E> {

    protected Value(ValueType<E> type) {
        super(type, ExpressionType.LITERAL);
    }

    @Override
    public Expression<E> simplify() {
        return this;
    }

    @Override
    public E evaluate() {
        @SuppressWarnings("unchecked") E val = (E) this;
        return val;
    }
}
